mihomo 配置与使用
mihomo(原 Clash Meta)代理工具的配置与使用完整指南
mihomo 配置与使用
[!info] related notes 见 obsidian笔记链接 中关于 mihomo 的链接示例。
目标
配置 mihomo(原 Clash Meta)代理工具,实现网络流量代理、分流规则和透明代理等功能。
前置条件
- 已下载 mihomo 可执行文件(GitHub Releases)
- 有可用的代理订阅链接或手动配置的节点信息
- 了解基本的代理协议(SS、SSR、VMess、Trojan、Hysteria2 等)
安装步骤
下载安装
# Linux / macOS
wget https://github.com/MetaCubeX/mihomo/releases/latest/download/mihomo-linux-amd64.gz
gunzip mihomo-linux-amd64.gz
chmod +x mihomo-linux-amd64
sudo mv mihomo-linux-amd64 /usr/local/bin/mihomo
# 验证安装
mihomo -v
Windows:从 GitHub Releases 下载 .exe 文件,放入 PATH 目录。
目录结构
~/.config/mihomo/
├── config.yaml # 主配置文件
├── Country.mmdb # GeoIP 数据库(自动生成)
├── proxies/ # 自定义节点配置(可选)
└── rules/ # 自定义规则集(可选)
配置文件结构
基础配置(config.yaml)
# 基础设置
port: 7890 # HTTP 代理端口
socks-port: 7891 # SOCKS5 代理端口
mixed-port: 7893 # 混合端口(HTTP + SOCKS5)
allow-lan: false # 允许局域网连接
mode: rule # 模式:rule / global / direct
log-level: info # 日志级别
# 外部控制(Web UI)
external-controller: 127.0.0.1:9090
external-ui: ui
secret: "" # 控制接口密码
Proxies(节点配置)
proxies:
- name: "节点1-SS"
type: ss
server: example.com
port: 443
cipher: aes-256-gcm
password: "your-password"
- name: "节点2-VMess"
type: vmess
server: example.com
port: 443
uuid: your-uuid-here
alterId: 0
cipher: auto
tls: true
- name: "节点3-Trojan"
type: trojan
server: example.com
port: 443
password: "your-password"
sni: example.com
- name: "节点4-Hysteria2"
type: hysteria2
server: example.com
port: 443
password: "your-password"
Proxy Groups(策略组)
proxy-groups:
- name: "Proxy"
type: select # 手动选择
proxies:
- "节点1-SS"
- "节点2-VMess"
- "节点3-Trojan"
- "节点4-Hysteria2"
- DIRECT
- name: "Auto"
type: url-test # 自动测速选择最快节点
proxies:
- "节点1-SS"
- "节点2-VMess"
- "节点3-Trojan"
url: http://www.gstatic.com/generate_204
interval: 300 # 测速间隔(秒)
- name: "Streaming"
type: select
proxies:
- "Proxy"
- "Auto"
Rules(分流规则)
rules:
# 直连规则
- DOMAIN-SUFFIX,local,DIRECT
- DOMAIN-SUFFIX,localhost,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- GEOIP,CN,DIRECT
# 代理规则
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-SUFFIX,github.com,Proxy
- DOMAIN-SUFFIX,youtube.com,Streaming
- DOMAIN-KEYWORD,twitter,Proxy
# 使用规则集(Rule Providers)
- RULE-SET,proxy,Proxy
- RULE-SET,direct,DIRECT
- RULE-SET,reject,REJECT
# 兜底规则
- MATCH,Proxy
订阅转换
大多数机场提供的订阅链接需要转换为 mihomo 格式:
# 使用 subconverter 进行订阅转换
# 在线转换(示例)
https://sub.xeton.dev/sub?target=clash&url=你的订阅链接
# 本地部署 subconverter
docker run -d --name subconverter \
-p 25500:25500 \
tindy2013/subconverter:latest
在配置中引用远程配置:
proxy-providers:
my-provider:
type: http
url: "https://sub.example.com/sub?target=clash"
interval: 3600
path: ./proxies/my-provider.yaml
health-check:
enable: true
interval: 600
url: http://www.gstatic.com/generate_204
TUN 模式
TUN 模式可以接管系统所有流量(包括不支持代理的应用):
tun:
enable: true
stack: system # 或 gvisor / mixed
dns-hijack:
- any:53
auto-route: true # 自动配置路由
auto-detect-interface: true # 自动检测出口网卡
[!warning] TUN 模式需要管理员/root 权限
系统代理设置
命令行启动
# 启动 mihomo
mihomo -d ~/.config/mihomo/
# 设置环境变量(Linux/macOS)
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7891
Windows 系统代理
启动 mihomo 后,Windows 设置 → 网络和 Internet → 代理:
- 手动设置代理:
127.0.0.1:7890
Web UI 管理
mihomo 支持外部 Web UI 管理面板:
external-controller: 127.0.0.1:9090
external-ui: ui
常用 Web UI:
- yacd:
http://127.0.0.1:9090/ui - metacubexd:mihomo 专用
验证
-
mihomo -d ~/.config/mihomo/启动无报错 - 浏览器访问
http://127.0.0.1:9090能看到控制面板 - 代理测试:
curl -x http://127.0.0.1:7890 https://www.google.com能正常返回 - 分流规则生效:国内站点直连、国外站点走代理
- Web UI 显示节点列表和连接状态
常见问题
Q: 启动报错 “address already in use”? A: 端口被占用。检查是否有其他代理软件在运行(如 Clash、v2ray)。修改 config.yaml 中的端口号或停止冲突进程。
Q: 能上 Google 但 GitHub 连不上?
A: 检查分流规则是否将 github.com 代理。可能是 DNS 污染,尝试在 DNS 配置中启用 enhanced-mode: fake-ip。
Q: TUN 模式不生效?
A: 确认以管理员/root 权限运行。检查 auto-route 和 auto-detect-interface 是否开启。Windows 可能需要关闭其他 VPN/TUN 软件。
Q: 订阅更新失败? A: 检查订阅链接是否有效、是否过期。网络问题可尝试手动下载订阅内容后放入本地文件。
Q: 如何实现开机自启? A: Linux:创建 systemd service。Windows:使用 nssm 或任务计划程序。macOS:创建 launchd plist。
# Linux systemd 示例
sudo tee /etc/systemd/system/mihomo.service <<EOF
[Unit]
Description=mihomo
After=network.target
[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable mihomo
sudo systemctl start mihomo